<template>
  <div>
    <!-- 1、面包屑导航区域 -->
    <el-breadcrumb separator-class="el-icon-arrow-right">
      <el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
      <el-breadcrumb-item>商品管理</el-breadcrumb-item>
      <el-breadcrumb-item>商品列表</el-breadcrumb-item>
    </el-breadcrumb>

    <!-- 2、卡片区域 -->
    <el-card>
         <!-- 第一行：搜索框和按钮 -->
        <el-row :gutter="10">
            <el-col :span="10">
              <!-- Clearable属性是指输入内容可清空，点击清空触发一个事件 clear -->
                <el-input placeholder="请输入搜索内容" v-model="queryInfo.query" @clear="clearAndsearch" :clearable="true">
                    <el-button slot="append" icon="el-icon-search" @click="searchGoods"></el-button>
                </el-input>
            </el-col>
            <el-col :span="14">
                <el-button type="primary" @click="ToaddGoodsPage">添加商品</el-button>
            </el-col>
        </el-row>
        <!-- 第二行： 用户列表信息 :  可以使用组件库中的el-table组件  
            我也可以使用学过的v-for循环去便遍历:
                1.0 v-for遍历很方便，就不用使用slot-scope插槽去获取当前行的数据了。
        -->
        <el-table :data="goodsList" border style="width: 100%">
          <!-- 索引列 -->
          <el-table-column type="index" width="50px" label='#'></el-table-column>
          <!-- 有数据源的4列 -->
          <el-table-column prop="goods_name" label="商品名称"></el-table-column>
          <el-table-column prop="goods_price" label="商品价格(元)" width="120px"></el-table-column>
          <el-table-column prop="goods_weight" label="商品重量" width="100px"></el-table-column>
          <el-table-column label="创建时间" width="160px" prop="add_time">
              <template slot-scope="scope">
                  {{scope.row.add_time | dateFormat}}
              </template>
          </el-table-column>
          <!-- 操作列 -->
          <el-table-column label="操作" width="120px">
              <template slot-scope="scope">
                <el-button type="primary" icon="el-icon-edit" @click="updateGoodsDialog(scope.row)" size="small"></el-button>
                <el-button type="danger" icon="el-icon-delete" @click="deleteGoods(scope.row)" size="small"></el-button>
              </template>
          </el-table-column>
        </el-table>

        <!-- 第三行 :分页区域 ： 把参数填进去，自动根据用户列表数据根据下面的参数分为几页，这个分页组件很好用。 -->
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="queryInfo.pagenum"
          :page-sizes="[5, 10 ,30 ,50,80,100]"
          :page-size="queryInfo.pagesize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="goodsTotal">
        </el-pagination>
    </el-card>
  </div>
</template>

<script>
export default {
    data(){
      return{
        queryInfo:{
          // 查询参数
          query:'',
          // 当前页码
          pagenum:1,
          // 每页数据条数
          pagesize:5,
        },

        // 获取商品列表
        goodsList:[
          // {
          //   add_time: 1514345477,
          //   cat_id: null,
          //   cat_one_id: null,
          //   cat_three_id: null,
          //   cat_two_id: null,
          //   goods_id: 926,
          //   goods_name: "【海外购自营】黎珐(ReFa) MTG日本 CARAT铂金微电流瘦脸瘦身提拉紧致V脸美容仪 【保税仓发货】",
          //   goods_number: 100,
          //   goods_price: 1399,
          //   goods_state: 0,
          //   goods_weight: 100,
          //   hot_mumber: 0,
          //   is_promote: false,
          //   upd_time: 1514345477,
          // },
        ],
        // 获取到商品的数目
        goodsTotal:0,
      }
    },
    methods:{
      // 获取商品列表
      async getGoodsList(){
          const res = await this.$http.get('goods',{ params: this.queryInfo } );
          // console.log('商品列表：',res.data);

          if(res.data.meta.status!==200) return;

          this.goodsList=res.data.data.goods;
          this.goodsTotal=res.data.data.total;
      },
      // 每页显示数据的条数发生改变
      handleSizeChange(newSize){
          this.queryInfo.pagesize=newSize;
          this.getGoodsList();
      },
      // 页码数发生改变
      handleCurrentChange(newPage){
          this.queryInfo.pagenum=newPage;
          this.getGoodsList();
      },
      // 搜索输入框的清空事件：点击清空后实现内容清空且再次显示全部用户列表信息(搜索关键字为空时的用户信息)
      clearAndsearch(){
         this.getGoodsList();
      },
      // 点击搜索按钮
      searchGoods(){
         this.getGoodsList();
      },

      // 删除商品
      async deleteGoods(good){
      let result = await this.$messagebox.confirm('此操作将永久删除该参数, 是否继续?', '提示', {
            confirmButtonText: '确定',  //返回值为 confirm
            cancelButtonText: '取消',   //返回值为 cancel
            type: 'warning'
          }).catch(() => this.$message({ type: 'info', message: '已取消删除'}) );

          // 当用户点击取消时会报错，用catch捕获到错误去执行对应的事件

          //点击确定
          if(result == 'confirm'){
            const res = await this.$http.delete(`goods/${good.goods_id}`);
            if(res.data.meta.status!==200)
                return this.$message({ type: 'error', message: '删除商品失败!'});

            this.$message({ type: 'success', message: '删除商品成功!'});
            this.getGoodsList();
          }
      },

      // 修改商品的对话框
      updateGoodsDialog(good){

      },

      // 去添加商品页面
      ToaddGoodsPage(){
          this.$router.push('/addgoodspage');
      }
    },
    created(){
      this.getGoodsList();
    }
}
</script>

<style scoped>
  .el-card {
    width: 100%;
    margin-top: 10px;
    box-shadow: 0px 0px 3px skyblue;
    background-color: #fff;
  }
  /* 输入框和按钮所在盒子的宽度 */
  .el-table{
    margin-top: 15px;
    font-size: 13px;
  }
  .el-pagination{
    margin-top: 10px;
  }
</style>